아키텍처 유형
JeongSeulho
2023년 04월 26일
준비중...
클립보드로 복사
📌Layered architecture
- 계층적인 아키텍처
📖Layered architecture 특징
-
각 계층은 그 위 계층에 서버스를 제공한다
-
이미 있는 시스템 위에 새로운 기능을 쌓을 때 사용
-
여러 팀이 각 기능 계층을 하나씩 맡아 개발할 때 사용
-
보안성을 강화해야할 때(보안해야할 계층을 아래에 두어서 보안강화)
-
인터페이스를 동일하게 유지하면 하나의 계층을 새로운 구현으로 만들 수 있다
- 밑의 예에서 A운영체제의 상위 계층들을 인터페이스를 유지한채로(연결 선 5개) B운영체제(B운영체제에서 해당 인터페이스들을 지원한다면)로 그대로 옮겨서 사용 가능(새롭게 만든 구현)
-
각 계층에 중복되는 기능을 추가하여 신뢰성 높임(여러번 검사해서 보안성 강화느낌)
-
계층적으로 명백히 구분하는 작업이 어렵다
-
2계층이상 건너뛰어 인터페이스 연결할 수 없어서 성능문제 발생 가능
📌Client-server architecture
- 여러 각 서버에 역할을 나누어 클라이언트는 필요한 서버들만 조합하여 사용하는 아키텍처
📖Client-server architecture 특징
- 여러 지역에서 공유 DB를 사용할 때 사용
- 시스템 부하가 가변적일때 사용
- 네트워크로 서버들을 분산 배치할 수 있다
- DDOS공격, 서버 다운에 취약
- 성능이 컴퓨터 시스템 뿐만 아니라 네트워크에도 의존
- 여러 서비스들이 서로 의존관계(연동)가 있을때 관리 문제 발생
📌Model-View-Controller(MVC)
- Model : 비즈니스 로직 수행 및 DB관리
- View : 사용자에게 보여지는 부분
- Controller : Model과 View를 조합하여 사용자 입력을 처리
📖MVC 특징
- 데이터를 보여주는 것과 처리하는 것을 분리
- 데이터를 여러방식으로 보여주고 싶을 때 사용(한가지 데이터(Model)로 표, 원형차트, 막대차트(View) 등으로 보여주고 싶음 => Model은 그대로 View만 변경)
📌이벤트 주도 아키텍처
- sub-system1이 sub-system2를 사용하고자 한다면 핸들러에게 텍스트를 전달(이벤트 발생), sub-system2이 동작
- 이벤트를 이용하여 서로 상호작용
📖이벤트 주도 아키텍처 특징
- 네트워크 상에 서로 다른 컴퓨터에 분산된 컴포넌트를 통합
- 시스템 추가, 수정, 변경등이 쉽다
- 한 시스템에서 발생한 이벤트가 언제 처리될지 모름
📌Repository 아키텍처
- 공유 Repository를 두고 서로 상호작용
- 각 언어 에디터에서 코드 작성 Repository에 공유 => code generator는 공유 repo에 코드를 컴파일
📖Repository 아키텍처 특징
- 새로운 데이터를 중앙 repo에 추가하면 어떤 액션이나 도구를 실행하게 되는 시스템에서 사용
- 각 컴포넌트들은 독립적
- 중앙 repo의 데이터를 일관성있게 관리
- 중앙 repo에 문제가 있으면 전체 시스템에 영향을 준다
- 속도측면에서 느릴 수 있다.
📌Pipe and Filter 아키텍처
- 아래는 실제코드를 컴퓨터가 이해하는 문자로 변환하고 실행하는 예시
📖Pipe and Filter 아키텍처 특징
- 한 컴포넌트가 출력한 데이터를 다른 컴포넌트의 입력이 됨
- 이해하기 쉽고, 재사용이 쉬움
- 변환, 수정이 쉽다
- 서로 인접한 컴포넌트들 간의 데이터 형식을 미리 정해두어야함
- 아웃풋을 인풋으로 하기위한 자료구조 변환이 생기는 부하 늘어남